package com.hbnu;

import com.hbnu.pojo.*;
import org.hibernate.SQLQuery;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;

import java.util.List;


public class HibernateTest {
    public static void main(String[] args) {
        // 构建session
        // 加载配置
        Configuration configuration = new Configuration().configure();
        // 构建sessionFactory
        SessionFactory sessionFactory = configuration.buildSessionFactory();
        // 获取session
        Session session = sessionFactory.openSession();

        Transaction transaction = session.beginTransaction();

//        Phone phone = new Phone();
//        phone.setId(1);
//        phone.setPhoneType(PhoneType.MOBILE);
//        phone.setName(new Name("zhou","kangan"));
//        phone.setType("andorid");

//        Book book = new Book();
//        book.setIsbn("123-345");
//        session.save(book);

        // Person person = new Person();

        // person.setName("jack");
        // person.setSalary(3800d);
        // session.save(person);
        
       	//hibernate 的多种查询方式
       	//1.查询所有
       	// List<Person> persons=session.createQuery("from Person").list();
        // for (Person person : persons) {
        //     System.out.println(person;
        // }
        // 
        
        //查询某一列
        // List<String> lists=session.createQuery("select name from Person").list();

        // for (String name : lists) {
        //     System.out.println(name);
        // }
        
        // Criteria对象
        // Criteria criteria=session.createCriteria(Person.class);//创建Criteria对象，此方法需要给出实体类名称
        // List<Person> persons=criteria.list();//调用Criteria方法进行查询

        //SQLQuery对象
//        SQLQuery sqlQuery=session.createSQLQuery("select * from person");//创建SQLQuery对象，需要传入底层sql语句
//        sqlQuery.addEntity(Person.class);//返回的list是数组，需要将其转换成实体类对象
//        List<Person> persons=sqlQuery.list();//调用方法进行查询

        transaction.commit();
        session.close();
        sessionFactory.close();
    }
}
